//
// Created by YueChuan on 2023/3/8.
//

#ifndef NETWORKDISK_USER_H
#define NETWORKDISK_USER_H

#include "QString"
#include "QList"
#include "QMap"
#include "ostream"
#include "QSqlQuery"
#include <QVariant>

class User {

public:
    const QString &getUserName() const;

    void setUserName(const QString &userName);

    int getUpFileCount() const;

    void setUpFileCount(int upFileCount);

    int getFriendCount() const;

    void setFileList(const QList<QString> &fileList);

    const QList<QString> &getFileList() const;

    const QMap<QString, double> &getFileMap() const;

    const QList<int> &getFriendList() const;

    void setFriendCount(int friendCount);

    void insertOldFriend(const int &uid);

    void addNewFriend(const int &uid);

    void deleteFriend(const QString &friendName);

    void upDataNewFile(const QString fileName);

    void deleteFile(const QString fileName);

    /*
     * 设置主用户的用户名，好友数，上传文件数
     */
    void initUserBaseInfo();

    friend std::ostream *operator<<(std::ostream &os, const User &c);


public:
    int getUid() const;

    void setUid(int uid);

private:
    int upFileCount{0};
    QList<QString> fileList;        // 文件列表
    QMap<QString, double> fileMap;  // 路径和文件大小
    QList<int> friendList;      // 好友列表

    int friendCount{0};         // 好友数目
    int uid;                    // 用户唯一标识
    QString userName;           // 用户名称
};


#endif //NETWORKDISK_USER_H
